import request from '@/utils/request';

/**
 * 获取菜单列表
 * @param {Object} params - 查询参数
 * @param {string} params.nodeName - 节点名称
 * @param {string} params.routePath - 路由地址
 * @param {number} params.menuType - 菜单类型
 * @returns {Promise} 菜单列表数据
 */
export const getMenuList = (params) => {
  return request({
    url: '/menus',
    method: 'get',
    params,
  });
};

/**
 * 新增菜单
 * @param {Object} data - 菜单数据
 * @param {string} data.name - 菜单名称
 * @param {number} data.type - 菜单类型：0-目录，1-菜单，2-权限
 * @param {string} data.path - 路由地址
 * @param {number} data.parentId - 上级菜单ID
 * @param {number} data.orderNo - 排序号
 * @param {number} data.status - 状态：1-启用，0-禁用
 * @param {string} data.component - 组件路径
 * @param {string} data.permission - 权限标识
 * @param {boolean} data.isExt - 是否外链，默认false
 * @param {number} data.show - 是否显示：1-显示，0-隐藏，默认1
 * @param {number} data.keepAlive - 页面缓存
 * @returns {Promise} 创建结果
 */
export const createMenu = (data) => {
  return request({
    url: '/menus',
    method: 'post',
    data,
  });
};

/**
 * 更新菜单
 * @param {number} id - 菜单ID
 * @param {Object} data - 更新的菜单数据
 * @param {string} data.name - 菜单名称
 * @param {number} data.type - 菜单类型：0-目录，1-菜单，2-权限
 * @param {string} data.path - 路由地址
 * @param {number} data.parentId - 上级菜单ID
 * @param {number} data.orderNo - 排序号
 * @param {number} data.status - 状态：1-启用，0-禁用
 * @param {string} data.component - 组件路径
 * @param {string} data.permission - 权限标识
 * @param {boolean} data.isExt - 是否外链，默认false
 * @param {number} data.show - 是否显示：1-显示，0-隐藏，默认1
 * @param {number} data.keepAlive - 页面缓存
 * @returns {Promise} 更新结果
 */
export const updateMenu = (id, data) => {
  return request({
    url: `/menus/${id}`,
    method: 'put',
    data,
  });
};

/**
 * 删除菜单
 * @param {number} id - 菜单ID
 * @returns {Promise} 删除结果
 */
export const deleteMenu = (id) => {
  return request({
    url: `/menus/${id}`,
    method: 'delete',
  });
};

/**
 * 获取菜单详情
 * @param {number} id - 菜单ID
 * @returns {Promise} 菜单详情
 */
export const getMenuDetail = (id) => {
  return request({
    url: `/menus/${id}`,
    method: 'get',
  });
};